<main class="container-xl">
    <div id="diagnostics-block" class="my-3 p-3 rounded shadow">
        <h6 class="border-bottom pb-2 mb-2">Diagnostics</h6>

        <h3>Versions</h3>
        <div class="row">
            <div class="col-md">
                <dl class="row">
                    <dt class="col-sm-5">Server Installed
                        <span class="badge bg-success d-none abbr-badge" id="server-success" title="Latest version is installed.">Ok</span>
                        <span class="badge bg-warning text-dark d-none abbr-badge" id="server-warning" title="There seems to be an update available.">Update</span>
                        <span class="badge bg-info text-dark d-none abbr-badge" id="server-branch" title="This is a branched version.">Branched</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="server-installed">{{page_data.current_release}}</span>
                    </dd>
                    <dt class="col-sm-5">Server Latest
                        <span class="badge bg-secondary d-none abbr-badge" id="server-failed" title="Unable to determine latest version.">Unknown</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="server-latest">{{page_data.latest_release}}<span id="server-latest-commit" class="d-none">-{{page_data.latest_commit}}</span></span>
                    </dd>
                    {{#if page_data.web_vault_enabled}}
                    <dt class="col-sm-5">Web Installed
                        <span class="badge bg-success d-none abbr-badge" id="web-success" title="Latest version is installed.">Ok</span>
                        <span class="badge bg-warning text-dark d-none abbr-badge" id="web-warning" title="There seems to be an update available.">Update</span>
                        <span class="badge bg-info text-dark d-none abbr-badge" id="web-prerelease" title="You seem to be using a pre-release version.">Pre-Release</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="web-installed">{{page_data.web_vault_version}}</span>
                    </dd>
                    <dt class="col-sm-5">Web Latest
                        <span class="badge bg-secondary d-none abbr-badge" id="web-failed" title="Unable to determine latest version.">Unknown</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="web-latest">{{page_data.latest_web_build}}</span>
                    </dd>
                    {{/if}}
                    {{#unless page_data.web_vault_enabled}}
                    <dt class="col-sm-5">Web Installed</dt>
                    <dd class="col-sm-7">
                        <span id="web-installed">Web Vault is disabled</span>
                    </dd>
                    {{/unless}}
                    <dt class="col-sm-5">Database</dt>
                    <dd class="col-sm-7">
                        <span><b>{{page_data.db_type}}:</b> {{page_data.db_version}}</span>
                    </dd>
                </dl>
            </div>
        </div>

        <h3>Checks</h3>
        <div class="row">
            <div class="col-md">
                <dl class="row">
                    <dt class="col-sm-5">OS/Arch</dt>
                    <dd class="col-sm-7">
                        <span class="d-block"><b>{{ page_data.host_os }} / {{ page_data.host_arch }}</b></span>
                    </dd>
                    <dt class="col-sm-5">Running within a container</dt>
                    <dd class="col-sm-7">
                    {{#if page_data.running_within_container}}
                        <span class="d-block"><b>Yes (Base: {{ page_data.container_base_image }})</b></span>
                    {{/if}}
                    {{#unless page_data.running_within_container}}
                        <span class="d-block"><b>No</b></span>
                    {{/unless}}
                    </dd>
                    <dt class="col-sm-5">Uses config.json</dt>
                    <dd class="col-sm-7">
                    {{#if page_data.overrides}}
                        <span class="d-inline"><b>Yes</b></span>
                        <span class="badge bg-info text-dark abbr-badge" title="Environment variables are overwritten by a config.json.&#013;&#010;{{page_data.overrides}}">Details</span>
                    {{/if}}
                    {{#unless page_data.overrides}}
                        <span class="d-block"><b>No</b></span>
                    {{/unless}}
                    </dd>
                    <dt class="col-sm-5">Uses a reverse proxy</dt>
                    <dd class="col-sm-7">
                    {{#if page_data.ip_header_exists}}
                        <span class="d-block" title="IP Header found."><b>Yes</b></span>
                    {{/if}}
                    {{#unless page_data.ip_header_exists}}
                        <span class="d-block" title="No IP Header found."><b>No</b></span>
                    {{/unless}}
                    </dd>
                    {{!-- Only show this if the IP Header Exists --}}
                    {{#if page_data.ip_header_exists}}
                    <dt class="col-sm-5">IP header
                    {{#if page_data.ip_header_match}}
                        <span class="badge bg-success abbr-badge" title="IP_HEADER config seems to be valid.">Match</span>
                    {{/if}}
                    {{#unless page_data.ip_header_match}}
                        <span class="badge bg-danger abbr-badge" title="IP_HEADER config seems to be invalid. IP's in the log could be invalid. Please fix.">No Match</span>
                    {{/unless}}
                    </dt>
                    <dd class="col-sm-7">
                    {{#if page_data.ip_header_match}}
                        <span class="d-block"><b>Config/Server:</b> {{ page_data.ip_header_name }}</span>
                    {{/if}}
                    {{#unless page_data.ip_header_match}}
                        <span class="d-block"><b>Config:</b> {{ page_data.ip_header_config }}</span>
                        <span class="d-block"><b>Server:</b> {{ page_data.ip_header_name }}</span>
                    {{/unless}}
                    </dd>
                    {{/if}}
                    {{!-- End if IP Header Exists --}}
                    <dt class="col-sm-5">Internet access
                    {{#if page_data.has_http_access}}
                        <span class="badge bg-success abbr-badge" title="We have internet access!">Ok</span>
                    {{/if}}
                    {{#unless page_data.has_http_access}}
                        <span class="badge bg-danger abbr-badge" title="There seems to be no internet access. Please fix.">Error</span>
                    {{/unless}}
                    </dt>
                    <dd class="col-sm-7">
                    {{#if page_data.has_http_access}}
                        <span class="d-block"><b>Yes</b></span>
                    {{/if}}
                    {{#unless page_data.has_http_access}}
                        <span class="d-block"><b>No</b></span>
                    {{/unless}}
                    </dd>
                    <dt class="col-sm-5">Internet access via a proxy</dt>
                    <dd class="col-sm-7">
                    {{#if page_data.uses_proxy}}
                        <span class="d-block" title="Internet access goes via a proxy (HTTPS_PROXY or HTTP_PROXY is configured)."><b>Yes</b></span>
                    {{/if}}
                    {{#unless page_data.uses_proxy}}
                        <span class="d-block" title="We have direct internet access, no outgoing proxy configured."><b>No</b></span>
                    {{/unless}}
                    </dd>
                    <dt class="col-sm-5">Websocket enabled
                        {{#if page_data.enable_websocket}}
                        <span class="badge bg-success d-none abbr-badge" id="websocket-success" title="Websocket connection is working.">Ok</span>
                        <span class="badge bg-danger d-none abbr-badge" id="websocket-error" title="Websocket connection error, validate your reverse proxy configuration!">Error</span>
                        {{/if}}
                    </dt>
                    <dd class="col-sm-7">
                    {{#if page_data.enable_websocket}}
                        <span class="d-block" title="Websocket connections are enabled (ENABLE_WEBSOCKET is true)."><b>Yes</b></span>
                    {{/if}}
                    {{#unless page_data.enable_websocket}}
                        <span class="d-block" title="Websocket connections are disabled (ENABLE_WEBSOCKET is false)."><b>No</b></span>
                    {{/unless}}
                    </dd>

                    <dt class="col-sm-5">DNS (github.com)
                        <span class="badge bg-success d-none abbr-badge" id="dns-success" title="DNS Resolving works!">Ok</span>
                        <span class="badge bg-danger d-none abbr-badge" id="dns-warning" title="DNS Resolving failed. Please fix.">Error</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="dns-resolved">{{page_data.dns_resolved}}</span>
                    </dd>
                    <dt class="col-sm-5">Date & Time (Local)
                        {{#if page_data.tz_env}}
                            <span class="badge bg-success abbr-badge" title="Configured TZ environment variable">{{page_data.tz_env}}</span>
                        {{/if}}
                    </dt>
                    <dd class="col-sm-7">
                        <span><b>Server:</b> {{page_data.server_time_local}}</span>
                    </dd>
                    <dt class="col-sm-5">Date & Time (UTC)
                        <span class="badge bg-success d-none abbr-badge" id="time-success" title="Server and browser times are within 15 seconds of each other.">Server/Browser Ok</span>
                        <span class="badge bg-danger d-none abbr-badge" id="time-warning" title="Server and browser times are more than 15 seconds apart.">Server/Browser Error</span>
                        <span class="badge bg-success d-none abbr-badge" id="ntp-server-success" title="Server and NTP times are within 15 seconds of each other.">Server NTP Ok</span>
                        <span class="badge bg-danger d-none abbr-badge" id="ntp-server-warning" title="Server and NTP times are more than 15 seconds apart.">Server NTP Error</span>
                        <span class="badge bg-success d-none abbr-badge" id="ntp-browser-success" title="Browser and NTP times are within 15 seconds of each other.">Browser NTP Ok</span>
                        <span class="badge bg-danger d-none abbr-badge" id="ntp-browser-warning" title="Browser and NTP times are more than 15 seconds apart.">Browser NTP Error</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="ntp-time" class="d-block"><b>NTP:</b> <span id="ntp-server-string">{{page_data.ntp_time}}</span></span>
                        <span id="time-server" class="d-block"><b>Server:</b> <span id="time-server-string">{{page_data.server_time}}</span></span>
                        <span id="time-browser" class="d-block"><b>Browser:</b> <span id="time-browser-string"></span></span>
                    </dd>

                    <dt class="col-sm-5">Domain configuration
                        <span class="badge bg-success d-none abbr-badge" id="domain-success" title="The domain variable matches the browser location and seems to be configured correctly.">Match</span>
                        <span class="badge bg-danger d-none abbr-badge" id="domain-warning" title="The domain variable does not match the browser location.&#013;&#010;The domain variable does not seem to be configured correctly.&#013;&#010;Some features may not work as expected!">No Match</span>
                        <span class="badge bg-success d-none abbr-badge" id="https-success" title="Configured to use HTTPS">HTTPS</span>
                        <span class="badge bg-danger d-none abbr-badge" id="https-warning" title="Not configured to use HTTPS.&#013;&#010;Some features may not work as expected!">No HTTPS</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="domain-server" class="d-block"><b>Server:</b> <span id="domain-server-string">{{page_data.admin_url}}</span></span>
                        <span id="domain-browser" class="d-block"><b>Browser:</b> <span id="domain-browser-string"></span></span>
                    </dd>

                    <dt class="col-sm-5">HTTP Response validation
                        <span class="badge bg-success d-none abbr-badge" id="http-response-success" title="All headers and HTTP request responses seem to be ok.">Ok</span>
                        <span class="badge bg-danger d-none abbr-badge" id="http-response-warning" title="Some headers or HTTP request responses return invalid data!">Error</span>
                    </dt>
                    <dd class="col-sm-7">
                        <span id="http-response-errors" class="d-block"></span>
                    </dd>
                </dl>
            </div>
        </div>

        <h3>Support</h3>
        <div class="row">
            <div class="col-md">
                <dl class="row">
                    <dd class="col-sm-12">
                        If you need support please check the following links first before you create a new issue:
                         <a href="https://vaultwarden.discourse.group/" target="_blank" rel="noreferrer noopener">Vaultwarden Forum</a>
                         | <a href="https://github.com/dani-garcia/vaultwarden/discussions" target="_blank" rel="noreferrer noopener">Github Discussions</a>
                    </dd>
                </dl>
                <dl class="row">
                    <dd class="col-sm-12">
                        You can use the button below to pre-generate a string which you can copy/paste on either the Forum or when Creating a new issue at Github.<br>
                        We try to hide the most sensitive values from the generated support string by default, but please verify if there is nothing in there which you want to hide!<br>
                    </dd>
                </dl>
                <dl class="row">
                    <dt class="col-sm-3">
                        <button type="button" id="gen-support" class="btn btn-primary">Generate Support String</button>
                        <br><br>
                        <button type="button" id="copy-support" class="btn btn-info mb-3 d-none">Copy To Clipboard</button>
                        <div class="toast-container position-absolute float-start vw-copy-toast">
                            <div id="toastClipboardCopy" class="toast fade hide" role="status" aria-live="polite" aria-atomic="true" data-bs-autohide="true" data-bs-delay="1500">
                                <div class="toast-body">
                                    Copied to clipboard!
                                </div>
                            </div>
                        </div>
                    </dt>
                    <dd class="col-sm-9">
                        <pre id="support-string" class="pre-scrollable d-none w-100 border p-2"></pre>
                    </dd>
                </dl>
            </div>
        </div>
    </div>
</main>
<script src="{{urlpath}}/vw_static/admin_diagnostics.js"></script>
<script type="application/json" id="diagnostics_json">{{to_json page_data}}</script>
